தமிழ்

எத்தீரியம் பிளாக்செயினில் ஸ்மார்ட் ஒப்பந்தங்களை உருவாக்குவதற்கான முன்னணி நிரலாக்க மொழியான சாலிடிட்டியை ஆராயுங்கள். இந்த விரிவான வழிகாட்டி அடிப்படைக் கருத்துகள் முதல் மேம்பட்ட நுட்பங்கள் வரை அனைத்தையும் உள்ளடக்கியது.

சாலிடிட்டி: ஸ்மார்ட் ஒப்பந்த நிரலாக்கத்திற்கான விரிவான வழிகாட்டி

சாலிடிட்டி என்பது ஒரு உயர்மட்ட, ஒப்பந்தம் சார்ந்த நிரலாக்க மொழியாகும், இது பல்வேறு பிளாக்செயின் தளங்களில் ஸ்மார்ட் ஒப்பந்தங்களை செயல்படுத்த பயன்படுகிறது, குறிப்பாக எத்தீரியம். இது சி++, பைதான் மற்றும் ஜாவாஸ்கிரிப்ட் ஆகியவற்றால் பெரிதும் ஈர்க்கப்பட்டுள்ளது, மேலும் இது எத்தீரியம் விர்ச்சுவல் மெஷினை (EVM) இலக்காகக் கொண்டு வடிவமைக்கப்பட்டுள்ளது. இந்த வழிகாட்டி சாலிடிட்டியின் விரிவான கண்ணோட்டத்தை வழங்குகிறது, இது பிளாக்செயின் மேம்பாட்டு உலகில் ஈடுபட விரும்பும் ஆரம்ப மற்றும் அனுபவம் வாய்ந்த நிரலாளர்களுக்கு ஏற்றது.

ஸ்மார்ட் ஒப்பந்தங்கள் என்றால் என்ன?

சாலிடிட்டிக்குள் நுழைவதற்கு முன், ஸ்மார்ட் ஒப்பந்தங்கள் என்றால் என்ன என்பதைப் புரிந்துகொள்வது அவசியம். ஒரு ஸ்மார்ட் ஒப்பந்தம் என்பது ஒரு சுய-செயல்படுத்தும் ஒப்பந்தமாகும், இதில் ஒப்பந்தத்தின் விதிமுறைகள் நேரடியாக நிரலாக்கத்தில் எழுதப்பட்டுள்ளன. இது ஒரு பிளாக்செயினில் சேமிக்கப்படுகிறது மற்றும் முன் தீர்மானிக்கப்பட்ட நிபந்தனைகள் பூர்த்தி செய்யப்படும்போது தானாகவே செயல்படுத்தப்படும். ஸ்மார்ட் ஒப்பந்தங்கள் பல்வேறு பயன்பாடுகளில் தானியங்கி, வெளிப்படைத்தன்மை மற்றும் பாதுகாப்பை செயல்படுத்துகின்றன, அவை பின்வருமாறு:

ஏன் சாலிடிட்டி?

சாலிடிட்டி என்பது எத்தீரியம் மற்றும் பிற EVM-இணக்கமான பிளாக்செயின்களில் ஸ்மார்ட் ஒப்பந்தங்களை எழுதுவதற்கான முக்கிய மொழியாகும், இதற்கு பல காரணங்கள் உள்ளன:

உங்கள் மேம்பாட்டு சூழலை அமைத்தல்

சாலிடிட்டியுடன் மேம்பாட்டைத் தொடங்க, நீங்கள் பொருத்தமான மேம்பாட்டுச் சூழலை அமைக்க வேண்டும். சில பிரபலமான விருப்பங்கள் இங்கே:

ரீமிக்ஸ் IDE

ரீமிக்ஸ் என்பது ஒரு ஆன்லைன், உலாவி அடிப்படையிலான IDE ஆகும், இது சாலிடிட்டியுடன் கற்றல் மற்றும் பரிசோதனைக்கு ஏற்றது. இதற்கு உள்ளூர் நிறுவல் தேவையில்லை மேலும் இது போன்ற அம்சங்களை வழங்குகிறது:

https://remix.ethereum.org/ இல் ரீமிக்ஸ் IDE ஐ அணுகவும்

டிரஃபிள் சூட்

டிரஃபிள் என்பது ஒரு விரிவான மேம்பாட்டு கட்டமைப்பு ஆகும், இது ஸ்மார்ட் ஒப்பந்தங்களை உருவாக்குதல், சோதனை செய்தல் மற்றும் வரிசைப்படுத்துதல் செயல்முறையை எளிதாக்குகிறது. இது போன்ற கருவிகளை வழங்குகிறது:

டிரஃபிளை நிறுவ:

npm install -g truffle

ஹார்தாட்

ஹார்தாட் மற்றொரு பிரபலமான எத்தீரியம் மேம்பாட்டு சூழலாகும், இது அதன் நெகிழ்வுத்தன்மை மற்றும் விரிவாக்கத்திற்கு பெயர் பெற்றது. இது உங்கள் சாலிடிட்டி குறியீட்டைத் தொகுக்க, வரிசைப்படுத்த, சோதிக்க மற்றும் பிழைதிருத்த உங்களை அனுமதிக்கிறது. முக்கிய அம்சங்கள் பின்வருமாறு:

ஹார்தாட்டை நிறுவ:

npm install --save-dev hardhat

சாலிடிட்டி அடிப்படைகள்: தொடரியல் மற்றும் தரவு வகைகள்

சாலிடிட்டியில் உள்ள அடிப்படை தொடரியல் மற்றும் தரவு வகைகளை ஆராய்வோம்.

சாலிடிட்டி ஒப்பந்தத்தின் அமைப்பு

ஒரு சாலிடிட்டி ஒப்பந்தம் பொருள் சார்ந்த நிரலாக்கத்தில் உள்ள ஒரு வகுப்பைப் போன்றது. இது நிலை மாறிகள், செயல்பாடுகள் மற்றும் நிகழ்வுகளைக் கொண்டுள்ளது. இதோ ஒரு எளிய உதாரணம்:

pragma solidity ^0.8.0;

contract SimpleStorage {
 uint256 storedData;

 function set(uint256 x) public {
 storedData = x;
 }

 function get() public view returns (uint256) {
 return storedData;
 }
}

விளக்கம்:

தரவு வகைகள்

சாலிடிட்டி பல்வேறு தரவு வகைகளை ஆதரிக்கிறது:

உதாரணம்:

pragma solidity ^0.8.0;

contract DataTypes {
 uint256 public age = 30;
 bool public isAdult = true;
 address public owner = 0x5B38Da6a701c568545dCfcB03FcB875f56beddC4;
 bytes32 public name = "JohnDoe";
 uint[] public numbers = [1, 2, 3, 4, 5];
 mapping(address => uint) public balances;

 constructor() {
 balances[msg.sender] = 100;
 }
}

நிலை மாறிகள் எதிராக உள்ளூர் மாறிகள்

நிலை மாறிகள் செயல்பாடுகளுக்கு வெளியே அறிவிக்கப்பட்டு பிளாக்செயினில் சேமிக்கப்படுகின்றன. அவை செயல்பாடு அழைப்புகள் மற்றும் ஒப்பந்த மரணதண்டனைகள் முழுவதும் நீடிக்கும். மேலே உள்ள எடுத்துக்காட்டில், storedData ஒரு நிலை மாறி.

உள்ளூர் மாறிகள் செயல்பாடுகளுக்குள் அறிவிக்கப்பட்டு அந்த செயல்பாட்டின் எல்லைக்குள் மட்டுமே இருக்கும். அவை பிளாக்செயினில் சேமிக்கப்படவில்லை மற்றும் செயல்பாடு முடிந்ததும் நிராகரிக்கப்படுகின்றன.

சாலிடிட்டியில் செயல்பாடுகள்

செயல்பாடுகள் ஸ்மார்ட் ஒப்பந்தங்களின் கட்டுமானத் தொகுதிகள். அவை ஒப்பந்தம் செய்யக்கூடிய தர்க்கத்தையும் செயல்பாடுகளையும் வரையறுக்கின்றன. செயல்பாடுகள் பின்வருமாறு இருக்கலாம்:

செயல்பாடு தெரிவுநிலை

சாலிடிட்டி செயல்பாடுகளுக்கு நான்கு தெரிவுநிலை மாற்றிகள் உள்ளன:

செயல்பாடு மாற்றிகள்

செயல்பாட்டின் நடத்தையை மாற்ற செயல்பாடு மாற்றிகள் பயன்படுத்தப்படுகின்றன. பாதுகாப்பு கட்டுப்பாடுகளை விதிக்க அல்லது செயல்பாட்டின் தர்க்கத்தை செயல்படுத்துவதற்கு முன்பு சோதனைகளைச் செய்ய அவை பெரும்பாலும் பயன்படுத்தப்படுகின்றன.

உதாரணம்:

pragma solidity ^0.8.0;

contract Ownership {
 address public owner;

 constructor() {
 owner = msg.sender;
 }

 modifier onlyOwner() {
 require(msg.sender == owner, "Only owner can call this function");
 _;
 }

 function transferOwnership(address newOwner) public onlyOwner {
 owner = newOwner;
 }
}

இந்த எடுத்துக்காட்டில், onlyOwner மாற்றி அழைப்பவர் ஒப்பந்தத்தின் உரிமையாளரா என்பதை சரிபார்க்கிறது. இல்லையென்றால், அது பரிவர்த்தனையை மாற்றுகிறது. _ பிளேஸ்ஹோல்டர் செயல்பாட்டின் குறியீட்டின் மீதமுள்ள பகுதியைக் குறிக்கிறது.

செயல்பாடு நிலை மாற்றமுடியாதது

சாலிடிட்டி செயல்பாடுகளிலும் நிலை மாற்றமுடியாத மாற்றிகள் இருக்கலாம்:

உதாரணம்:

pragma solidity ^0.8.0;

contract Example {
 uint256 public value;

 function getValue() public view returns (uint256) {
 return value;
 }

 function add(uint256 x) public pure returns (uint256) {
 return x + 5;
 }

 function deposit() public payable {
 value += msg.value;
 }
}

கட்டுப்பாட்டு கட்டமைப்புகள்

சாலிடிட்டி if, else, for, while, மற்றும் do-while சுழல்கள் போன்ற நிலையான கட்டுப்பாட்டு கட்டமைப்புகளை ஆதரிக்கிறது.

உதாரணம்:

pragma solidity ^0.8.0;

contract ControlStructures {
 function checkValue(uint256 x) public pure returns (string memory) {
 if (x > 10) {
 return "Value is greater than 10";
 } else if (x < 10) {
 return "Value is less than 10";
 } else {
 return "Value is equal to 10";
 }
 }

 function sumArray(uint[] memory arr) public pure returns (uint256) {
 uint256 sum = 0;
 for (uint256 i = 0; i < arr.length; i++) {
 sum += arr[i];
 }
 return sum;
 }
}

நிகழ்வுகள் மற்றும் பதிவுகள்

ஸ்மார்ட் ஒப்பந்தங்கள் வெளிப்புற உலகத்துடன் தொடர்பு கொள்ள நிகழ்வுகள் அனுமதிக்கின்றன. ஒரு நிகழ்வு வெளியிடப்படும்போது, அது பிளாக்செயினின் பரிவர்த்தனை பதிவுகளில் சேமிக்கப்படுகிறது. ஒப்பந்தத்தின் செயல்பாட்டைக் கண்காணிக்க இந்த பதிவுகளை வெளிப்புற பயன்பாடுகளால் கண்காணிக்க முடியும்.

உதாரணம்:

pragma solidity ^0.8.0;

contract EventExample {
 event ValueChanged(address indexed caller, uint256 newValue);

 uint256 public value;

 function setValue(uint256 newValue) public {
 value = newValue;
 emit ValueChanged(msg.sender, newValue);
 }
}

இந்த எடுத்துக்காட்டில், setValue செயல்பாடு அழைக்கப்படும் போதெல்லாம் ValueChanged நிகழ்வு வெளியிடப்படுகிறது. caller அளவுருவில் உள்ள indexed முக்கிய வார்த்தையானது வெளிப்புற பயன்பாடுகள் அழைப்பாளரின் முகவரியின் அடிப்படையில் நிகழ்வுகளை வடிகட்ட அனுமதிக்கிறது.

மரபுரிமை

சாலிடிட்டி மரபுரிமையை ஆதரிக்கிறது, இது இருக்கும் ஒப்பந்தங்களின் அடிப்படையில் புதிய ஒப்பந்தங்களை உருவாக்க உங்களை அனுமதிக்கிறது. இது குறியீடு மறுபயன்பாடு மற்றும் தொகுதி வடிவமைப்பை ஊக்குவிக்கிறது.

உதாரணம்:

pragma solidity ^0.8.0;

contract BaseContract {
 uint256 public value;

 function setValue(uint256 newValue) public {
 value = newValue;
 }
}

contract DerivedContract is BaseContract {
 function incrementValue() public {
 value++;
 }
}

இந்த எடுத்துக்காட்டில், DerivedContract BaseContract இலிருந்து மரபுரிமையாகிறது. இது value நிலை மாறியையும் setValue செயல்பாட்டையும் மரபுரிமையாகப் பெறுகிறது. இது அதன் சொந்த செயல்பாடான incrementValue ஐயும் வரையறுக்கிறது.

நூலகங்கள்

நூலகங்கள் ஒப்பந்தங்களைப் போன்றது, ஆனால் அவை தரவைச் சேமிக்க முடியாது. அவை பல ஒப்பந்தங்களால் அழைக்கப்படக்கூடிய மீண்டும் பயன்படுத்தக்கூடிய குறியீட்டை வரிசைப்படுத்தப் பயன்படுகின்றன. நூலகங்கள் ஒரு முறை மட்டுமே வரிசைப்படுத்தப்படுகின்றன, இது எரிவாயு செலவுகளைக் குறைக்கிறது.

உதாரணம்:

pragma solidity ^0.8.0;

library Math {
 function add(uint256 a, uint256 b) internal pure returns (uint256) {
 return a + b;
 }
}

contract Example {
 using Math for uint256;
 uint256 public result;

 function calculateSum(uint256 x, uint256 y) public {
 result = x.add(y);
 }
}

இந்த எடுத்துக்காட்டில், Math நூலகம் ஒரு add செயல்பாட்டை வரையறுக்கிறது. using Math for uint256; அறிக்கை டாட் குறியீட்டைப் பயன்படுத்தி uint256 மாறிகளில் add செயல்பாட்டை அழைக்க உங்களை அனுமதிக்கிறது.

பொதுவான ஸ்மார்ட் ஒப்பந்த பாதிப்புகள்

ஸ்மார்ட் ஒப்பந்தங்கள் பல்வேறு பாதிப்புகளுக்கு ஆளாகின்றன, இதன் விளைவாக நிதி இழப்பு அல்லது எதிர்பாராத நடத்தை ஏற்படலாம். இந்த பாதிப்புகளைப் பற்றி அறிந்திருப்பது மற்றும் அவற்றைக் குறைக்க நடவடிக்கை எடுப்பது அவசியம்.

மீண்டும் நுழைதல்

ஒரு ஒப்பந்தம் ஒரு வெளிப்புற ஒப்பந்தத்தை அழைக்கும்போது மீண்டும் நுழைதல் ஏற்படுகிறது, மேலும் வெளிப்புற ஒப்பந்தம் அசல் ஒப்பந்தத்தின் மரணதண்டனை முடிவடைவதற்கு முன்பு அசல் ஒப்பந்தத்திற்கு மீண்டும் அழைக்கிறது. இது எதிர்பாராத நிலை மாற்றங்களுக்கு வழிவகுக்கும்.

தணிப்பு: சரிபார்ப்பு-விளைவுகள்-ஊடாடுதல்கள் முறையைப் பயன்படுத்தவும், மேலும் வெளிப்புற அழைப்புக்கு கிடைக்கும் எரிவாயுவை கட்டுப்படுத்த transfer அல்லது send செயல்பாடுகளைப் பயன்படுத்தவும்.

வழிதல் மற்றும் வழிதல் குறைவாக இருத்தல்

ஒரு கணித செயல்பாடு ஒரு தரவு வகையின் அதிகபட்ச மதிப்பை மீறும் போது வழிதல் ஏற்படுகிறது. ஒரு கணித செயல்பாடு ஒரு தரவு வகையின் குறைந்தபட்ச மதிப்பை விடக் குறைவான மதிப்பில் முடிவடையும் போது வழிதல் குறைவாக இருத்தல் ஏற்படுகிறது.

தணிப்பு: SafeMath நூலகங்களைப் பயன்படுத்துங்கள் (சாலிடிட்டி 0.8.0 மற்றும் அதற்குப் பிந்தைய பதிப்புகளுடன், வழிதல் மற்றும் வழிதல் குறைவாக இருப்பதற்கான சோதனைகள் இயல்பாகவே உள்ளமைக்கப்பட்டிருந்தாலும்), இந்த சிக்கல்களைத் தடுக்க.

நேர முத்திரை சார்பு

பிளாக் நேர முத்திரையை (block.timestamp) நம்புவது உங்கள் ஒப்பந்தத்தை சுரங்கத் தொழிலாளர்களால் கையாளுவதற்கு ஆளாக்கலாம், ஏனெனில் நேர முத்திரையின் மீது அவர்களுக்கு சில கட்டுப்பாடு உள்ளது.

தணிப்பு: முக்கியமான தர்க்கத்திற்கு block.timestamp பயன்படுத்துவதைத் தவிர்க்கவும். ஆராக்கிள்கள் அல்லது நேரத்தின் பிற நம்பகமான ஆதாரங்களைப் பயன்படுத்தவும்.

சேவை மறுப்பு (DoS)

சட்டபூர்வமான பயனர்களால் பயன்படுத்த முடியாத ஒரு ஒப்பந்தத்தை உருவாக்க DoS தாக்குதல்கள் நோக்கமாக உள்ளன. கிடைக்கும் அனைத்து எரிவாயுவையும் பயன்படுத்துவதன் மூலமோ அல்லது ஒப்பந்தம் மாறக் காரணமான பாதிப்புகளைப் பயன்படுத்துவதன் மூலமோ இதை அடைய முடியும்.

தணிப்பு: எரிவாயு வரம்புகளை செயல்படுத்தவும், வரம்பற்ற மறு செய்கைகளுடன் சுழல்களைத் தவிர்க்கவும், பயனர் உள்ளீடுகளை கவனமாக சரிபார்க்கவும்.

முன் ஓட்டம்

ஒரு நிலுவையில் உள்ள பரிவர்த்தனையை யாராவது கவனித்து, அசல் பரிவர்த்தனைக்கு முன் அதைச் செயல்படுத்த அதிக எரிவாயு விலையுடன் தங்கள் சொந்த பரிவர்த்தனையை சமர்ப்பிக்கும்போது முன் ஓட்டம் ஏற்படுகிறது.

தணிப்பு: பரிவர்த்தனை விவரங்கள் செயல்படுத்தப்பட்ட பின்னரே தெரியும் வகையில் உறுதி-வெளிப்பாடு திட்டங்கள் அல்லது பிற நுட்பங்களைப் பயன்படுத்தவும்.

பாதுகாப்பான ஸ்மார்ட் ஒப்பந்தங்களை எழுதுவதற்கான சிறந்த நடைமுறைகள்

மேம்பட்ட சாலிடிட்டி கருத்துக்கள்

அடிப்படையானவற்றைப் பற்றிய உறுதியான புரிதல் உங்களுக்கு கிடைத்ததும், நீங்கள் மேலும் மேம்பட்ட கருத்துக்களை ஆராயலாம்:

சட்டமன்றம்

சாலிடிட்டி வரிசை சட்டசபை குறியீட்டை எழுத உங்களை அனுமதிக்கிறது, இது EVM இல் அதிக கட்டுப்பாட்டை உங்களுக்கு வழங்குகிறது. இருப்பினும், இது பிழைகள் மற்றும் பாதிப்புகளை அறிமுகப்படுத்தும் அபாயத்தையும் அதிகரிக்கிறது.

ப்ராக்ஸிகள்

தரவை மாற்றாமல் உங்கள் ஸ்மார்ட் ஒப்பந்தங்களை மேம்படுத்த ப்ராக்ஸிகள் உங்களை அனுமதிக்கின்றன. இது ஒரு ப்ராக்ஸி ஒப்பந்தத்தை வரிசைப்படுத்துவதை உள்ளடக்குகிறது, இது ஒரு செயலாக்க ஒப்பந்தத்திற்கு அழைப்புகளை அனுப்புகிறது. நீங்கள் ஒப்பந்தத்தை மேம்படுத்த விரும்பினால், புதிய செயலாக்க ஒப்பந்தத்தை வரிசைப்படுத்தி, புதிய செயலாக்கத்திற்கு சுட்டிக்காட்ட ப்ராக்ஸியைப் புதுப்பிக்கவும்.

மெட்டா பரிவர்த்தனைகள்

மெட்டா பரிவர்த்தனைகள் பயனர்கள் எரிவாயு கட்டணங்களை நேரடியாக செலுத்தாமல் உங்கள் ஸ்மார்ட் ஒப்பந்தத்துடன் தொடர்பு கொள்ள அனுமதிக்கின்றன. அதற்கு பதிலாக, ஒரு ரிலேயர் அவர்களின் சார்பாக எரிவாயு கட்டணங்களை செலுத்துகிறார். இது பயனர் அனுபவத்தை மேம்படுத்தலாம், குறிப்பாக பிளாக்செயினுக்கு புதிய பயனர்களுக்கு.

EIP-721 மற்றும் EIP-1155 (NFTகள்)

EIP-721 மற்றும் EIP-1155 போன்ற தரங்களைப் பயன்படுத்தி ஃபங்கிள் அல்லாத டோக்கன்களை (NFTகள்) உருவாக்க சாலிடிட்டி பொதுவாகப் பயன்படுத்தப்படுகிறது. NFT அடிப்படையிலான பயன்பாடுகளை உருவாக்குவதற்கு இந்த தரங்களைப் புரிந்துகொள்வது அவசியம்.

பிளாக்செயினின் எதிர்காலமும் சாலிடிட்டியும்

பிளாக்செயின் தொழில்நுட்பத்தின் அதிவேகமாக வளர்ந்து வரும் நிலப்பரப்பில் சாலிடிட்டி ஒரு முக்கியமான பங்கைக் கொண்டுள்ளது. பிளாக்செயின் ஏற்றுக்கொள்ளல் தொடர்ந்து அதிகரித்து வருவதால், புதுமையான மற்றும் பாதுகாப்பான பரவலாக்கப்பட்ட பயன்பாடுகளை உருவாக்க சாலிடிட்டி டெவலப்பர்களுக்கு அதிக தேவை இருக்கும். மொழி தொடர்ந்து புதுப்பிக்கப்பட்டு மேம்படுத்தப்பட்டு வருகிறது, எனவே இந்தத் துறையில் வெற்றிபெற சமீபத்திய முன்னேற்றங்களுடன் தொடர்ந்து இருப்பது அவசியம்.

முடிவுரை

எத்தீரியம் பிளாக்செயினில் ஸ்மார்ட் ஒப்பந்தங்களை உருவாக்குவதற்கான ஒரு சக்திவாய்ந்த மற்றும் பல்துறை மொழி சாலிடிட்டி. இந்த வழிகாட்டி சாலிடிட்டியின் அடிப்படைக் கருத்துகள் முதல் மேம்பட்ட நுட்பங்கள் வரை ஒரு விரிவான கண்ணோட்டத்தை வழங்கியுள்ளது. சாலிடிட்டியை மாஸ்டர் செய்வதன் மூலமும், பாதுகாப்பான மேம்பாட்டிற்கான சிறந்த நடைமுறைகளைப் பின்பற்றுவதன் மூலமும், பரவலாக்கப்பட்ட பயன்பாடுகளின் அற்புதமான உலகிற்கு நீங்கள் பங்களிக்கலாம் மற்றும் பிளாக்செயின் தொழில்நுட்பத்தின் எதிர்காலத்தை வடிவமைக்க உதவலாம். பாதுகாப்பிற்கு எப்போதும் முன்னுரிமை கொடுங்கள், உங்கள் குறியீட்டை முழுமையாக சோதிக்கவும், சாலிடிட்டி சுற்றுச்சூழல் அமைப்பில் உள்ள சமீபத்திய முன்னேற்றங்கள் குறித்து தொடர்ந்து அறிந்து கொள்ளவும் நினைவில் கொள்ளுங்கள். ஸ்மார்ட் ஒப்பந்தங்களின் சாத்தியம் மிகப்பெரியது, மேலும் சாலிடிட்டியுடன், உங்கள் புதுமையான யோசனைகளை நீங்கள் உயிர்ப்பிக்க முடியும்.